// // es5定义一个常量
// Object.defineProperty(window,'PI',{
//     value:3.14,
//     writable:false//禁止更改
// })
// PI=10
// console.log(PI);//3.14


// es6 
// const a =5
// a=6
// console.log(a);

// const声明的常量也具有会计作用域，不声明无法使用
/**
 * const obj = {
    name: 'LiMing',
    age: '30',
    skill: {
        name: 'code'
    }
};

console.log(obj);
obj.skill.name='vip'
console.log(obj);
// const声明的变量 基本类型的不可以改变，对于引用类型虽然obj.skill.name='vip'
// 但是 栈上的引用地址没变。只是改变了通过引用地址去堆上改变了内容

// 可以通过obj的冻结方法是先浅层冻结
Object.freeze(obj)
obj.height='175'
console.log(obj);
// 如果更改obj.skill.name='vip'这种，需要传入深层对象实现冻结
Object.freeze(obj.skill)
obj.skill.a='aaa'
console.log(obj);
 * 
 */